package com.ai.manager.edu.cms.user.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.ai.common.model.Pagination;
import com.ai.dao.edu.cms.user.BackendOperatorMapper;
import com.ai.manager.edu.cms.user.BackendOperatorManager;
import com.ai.model.edu.cms.backoperator.BackendOperator;
import com.ai.model.edu.cms.backoperator.dto.BackendOperatorDTO;
import com.ai.model.edu.cms.backoperator.vo.BackendOperatorVO;

@Component("backendOperatorManager")
public class BackendOperatorManagerImpl implements BackendOperatorManager {
    @Resource
    private BackendOperatorMapper backendOperatorMapper;

    /**
     * Description ： 根据用户名查找用户
     *
     * nyj
     *
     * @param userName
     * @return
     * @since
     *
     */
    public BackendOperatorVO findBackendOperatorByName(String userName) {
        return backendOperatorMapper.findBackendOperatorByName(userName);
    }

    /**
     * Description ： 根据dto(用户名+运营商id)查询用户信息<br>
     * 
     * yangwb
     * 
     * @param backendOperatorDTO
     * @return
     * @since
     *
     */
    public BackendOperatorVO findBackendOperatorByDTO(BackendOperatorDTO backendOperatorDTO) {
        return backendOperatorMapper.findBackendOperatorByDTO(backendOperatorDTO);
    }
    
    /**
     * Description ： 登录成功后更新用户信息
     * 
     * nyj
     * 
     * @param backendOperatorDTO
     * @return
     * @since
     *
     */
    public int updateBackendOperatorAfterLogin(BackendOperatorDTO backendOperatorDTO) {
        return backendOperatorMapper.updateBackendOperatorAfterLogin(backendOperatorDTO);
    }

    /**
     * Description ： 根据DTO查询用户分页信息<br>
     * 
     * yangwb
     * 
     * @param backendOperatorDTO
     * @return
     * @since
     * 
     */
    public Pagination<BackendOperatorVO> findBackendVOSPgByDTO(BackendOperatorDTO backendOperatorDTO) {
        Pagination<BackendOperatorVO> pg = new Pagination<BackendOperatorVO>();
        List<BackendOperatorVO> backendOperatorVOs = backendOperatorMapper.findBackendOperatorVOsByDTO(backendOperatorDTO);
        int count = backendOperatorMapper.countBackendOperatorVOsByDTO(backendOperatorDTO);
        pg.setRows(backendOperatorVOs);
        pg.setTotal(count);
        return pg;
    }

    /**
     * Description ： 根据DTO查询用户信息 不分页 新增or更新 做重名校验<br>
     * 
     * yangwb
     * 
     * @param backendOperatorDTO
     * @return
     * @since
     * 
     */
    public List<BackendOperatorVO> findBackendOperatorVOs(BackendOperatorDTO backendOperatorDTO) {
        return backendOperatorMapper.findBackendOperatorVOs(backendOperatorDTO);
    }

    /**
     * Description ： 新增用户信息<br>
     * 
     * yangwb
     * 
     * @param backendOperator
     * @return
     * @since
     *
     */
    public int addBackendOperator(BackendOperator backendOperator) {
        return backendOperatorMapper.addBackendOperator(backendOperator);
    }

    /**
     * Description ： 更新用户信息<br>
     * 
     * yangwb
     * 
     * @param backendOperator
     * @return
     * @since
     * 
     */
    public int updateBackendOperator(BackendOperator backendOperator) {
        return backendOperatorMapper.updateBackendOperator(backendOperator);
    }

    /**
     * Description ： 根据主键id查询用户对象<br>
     * 
     * yangwb
     * 
     * @param id
     * @return
     * @since
     * 
     */
    public BackendOperatorVO findBackendOperatorVOById(Long id) {
        return backendOperatorMapper.findBackendOperatorVOById(id);
    }

    /**
     * Description ：根据dto更新用户状态<br>
     * 
     * yangwb
     * 
     * @param backendOperatorDTO
     * @return
     * @since
     * 
     */
    public int updateBackendUserStatusByDTO(BackendOperatorDTO backendOperatorDTO) {
        return backendOperatorMapper.updateBackendUserStatusByDTO(backendOperatorDTO);
    }

    /**
     * Description ： 根据dto删除用户<br>
     * 
     * yangwb
     * 
     * @param backendOperatorDTO
     * @return
     * @since
     * 
     */
    public int deleteBackOperatorByDTO(BackendOperatorDTO backendOperatorDTO) {
        return backendOperatorMapper.deleteBackOperatorByDTO(backendOperatorDTO);
    }

    /**
     * Description  ： 根据ID批量查询用户信息<br>
     * 
     * wumc
     * @param idList
     * @return
     * @since
     *
     */
    @Override
    public List<BackendOperatorVO> findBackendOperatorListByIdList(List<Long> idList) {
        return backendOperatorMapper.findBackendOperatorListByIdList(idList);
    }

    /**
     * Description  ： 根据创建人姓名模糊查询数据<br>
     * 
     * wumc
     * @param term
     * @return
     * @since
     *
     */
    @Override
    public List<BackendOperatorVO> findOperatorListByName(String term) {
        Map<String, Object> params = new HashMap<String, Object>(1);
        params.put("realName", term);
        return backendOperatorMapper.findOperatorListByName(params);
    }

}
